package com.uuticketweb.ticket.db;

import java.io.Serializable;

import org.hibernate.Session;

/**
 * <p>
 * Title: 封装操作数据库中数据的各种业务的DAO接口
 * </p>
 * 
 * <p>
 * Description: 封装操作数据库中数据的各种业务的DAO接口。
 * </p>
 */
public interface IDaoSupport {
	/**
	 * <p>
	 * Title: 获得org.hibernate.Session实例
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于获得org.hibernate.Session实例。
	 * </p>
	 * 
	 * @return org.hibernate.Session实例
	 */
	public Session getLocalSession();
	
	/**
	 * <p>
	 * Title: 将指定对象保存到数据库表中
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于将指定对象保存到数据库表中。
	 * </p>
	 * 
	 * @param obj: 要保存的对象
	 * @return 给对象分配的标识符
	 */
	public Serializable save(Object obj);
	
	/**
	 * <p>
	 * Title: 将指定对象更新到数据库表中
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于将指定对象更新到数据库表中。
	 * </p>
	 * 
	 * @param obj: 要更新的对象
	 */
	public void update(Object obj);
	
	/**
	 * <p>
	 * Title: 复制给定对象到具有相同标识符的持久化对象
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于复制给定对象到具有相同标识符的持久化对象。
	 * </p>
	 * 
	 * @param obj: 给定对象
	 * @return 具有相同标识符的给定对象
	 */
	public Object merge(Object obj);
	
	/**
	 * <p>
	 * Title: 将指定对象保存或更新到数据库表中
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于将指定对象保存或更新到数据库表中。
	 * </p>
	 * 
	 * @param obj: 要保存或更新的对象
	 */
	public void saveOrUpdate(Object obj);
	
	/**
	 * <p>
	 * Title: 从数据库表中删除给定对象
	 * </p>
	 * 
	 * <p>
	 * Description: 该方法用于从数据库表中删除给定对象。
	 * </p>
	 * 
	 * @param obj: 要删除的对象
	 */
	public void delete(Object obj);
	
	public Object get(Serializable id, Class clazz);
}
